import sys
import os
import platform
from datetime import datetime
from app import create_app
from app.config import exConfig

try:
    from colorama import init, Fore, Style
except ImportError:
    # 自动安装 colorama（可选）
    os.system("pip install colorama")
    from colorama import init, Fore, Style
init(autoreset=True)  # 初始化颜色支持，兼容 Windows


def colored(msg, color):
    return getattr(Fore, color.upper(), Fore.WHITE) + msg + Style.RESET_ALL


sys.path.append(os.path.dirname(os.path.abspath(__file__)))
if os.getenv("DOCKER_ENV") != "true":
    from dotenv import load_dotenv

    load_dotenv('.env')

app = create_app(exConfig)

if __name__ == '__main__':
    # 从环境变量中获取主机地址，默认使用 127.0.0.1（本地）
    host = os.environ.get('FLASK_HOST', '127.0.0.1')

    # 从环境变量中获取端口，默认使用 5000
    port = int(os.environ.get('FLASK_PORT', 5000))

    # 获取调试模式的环境变量（字符串），默认启用
    debug_env = os.environ.get('FLASK_DEBUG', '1').lower()

    # 判断 debug 是否启用：支持多种表示方式，比如 '1'、'true'、'yes'
    debug = debug_env in ['1', 'true', 'yes']

    # 获取当前时间（用于显示启动时间）
    now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

    # 获取当前系统平台（例如 Windows、Linux、Darwin）
    system = platform.system()

    # ======== 启动信息美化输出部分（使用 colorama 彩色终端输出） ========
    print("\n" + "=" * 60)
    print(colored(" 🚀 Flask  AI 搜索服务 启动成功", "green"))  # 服务启动成功
    print("=" * 60)
    print(colored(f" 🕓 启动时间    : {now}", "cyan"))  # 启动时间
    print(colored(f" 🌐 服务地址    : http://{host}:{port}", "yellow"))  # 服务地址
    print(colored(f" 🔁 自动重载    : {'✅ 已启用' if debug else '❌ 未启用'}", "magenta"))  # 自动重载状态
    print(colored(f" 🧠 模型加载状态 : ✅ 成功", "green"))  # 模型加载状态
    print(colored(f" 🖥️ 系统平台    : {system}", "blue"))  # 系统平台
    print("=" * 60 + "\n")
    # ===============================================================

    # 启动 Flask 应用
    # debug=True 时：启用调试模式（自动重载 + 报错页面）
    # use_reloader=True 时：修改代码会自动重启服务
    app.run(host=host, port=port, debug=debug, use_reloader=False)
